정규 언어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
정규 언어는 주어진 알파벳을 사용하여 구성된 문자열의 집합으로, 특정 규칙에 따라 정의된다. 정규 언어는 공집합, 빈 문자열, 각 문자의 단일 집합을 기본으로 하며, 클레이니 스타, 합집합, 문자열 연결 연산을 통해 확장된다. 이러한 언어는 정규 표현식, 유한 상태 기계, 정규 문법 등 다양한 방식으로 표현될 수 있으며, 닫힘 성질과 결정 가능성을 갖는다. 정규 언어는 촘스키 위계에서 문맥 자유 언어의 부분 집합이며, 유한 언어와 별-자유 언어와 같은 하위 클래스를 포함한다.
더 읽어볼만한 페이지
- 유한 상태 기계 - Lex
Lex는 마이크 레스크와 에릭 슈미트가 개발한 어휘 분석기 생성기로, 정규 표현식을 기반으로 입력 텍스트를 분석하여 토큰을 식별하고 컴파일러 개발 등에 활용된다. - 유한 상태 기계 - Flex (어휘분석기)
Flex는 C 언어로 작성되어 텍스트를 토큰화하는 어휘 분석기 생성기로, 정규 표현식 기반의 결정적 유한 오토마타를 사용하여 프로그래밍 언어의 구문 분석 및 컴파일러 개발에 활용되며 자유 소프트웨어 라이선스 하에 배포된다. - 형식 언어 - 문자열
문자열은 사람이 읽을 수 있는 텍스트를 저장하고 정보를 전달하거나 받는 데 사용되는 순서가 있는 문자들의 시퀀스로, 다양한 형태의 데이터를 표현하며 유한한 길이를 가지고, 프로그래밍 언어에서 기본 또는 복합 자료형으로 제공되고, 문자 집합과 인코딩 방식에 따라 표현 방식이 달라진다. - 형식 언어 - 튜링 기계
튜링 기계는 앨런 튜링이 제시한 계산 모델로, 테이프 위에서 기계적으로 작동하며, 유한한 상태, 테이프, 헤드, 명령 표를 통해 작동하고, 계산 가능성과 알고리즘의 한계를 연구하는 데 사용된다. - 언어학에 관한 - 세례명
세례명은 기독교에서 세례를 받을 때 받는 새로운 이름으로, 예수 그리스도 안에서 새롭게 태어남을 의미하며, 성경 속 인물들의 이름 변화에서 유래하여 중세 이후 유럽에서 일반적인 이름 형태로 정착되었고, 수호성인의 이름에서 따와 이름 축일로 기념되기도 한다. - 언어학에 관한 - 개명
개명은 개인이나 법인이 이름을 바꾸는 행위로, 결혼, 이혼, 이민, 종교 개종, 성 정체성 확인, 사회적 이미지 개선, 범죄 회피 등 여러 이유로 행해지며, 절차는 국가별로 다르지만 법적 제약과 고려 사항이 따른다.
| 정규 언어 | |
|---|---|
| 기본 정보 | |
| 다른 이름 | 정규 표현식 언어, rational language (영문) |
| 정의 | 특정 문자열 집합을 정의하는 형식 언어 |
| 관련 분야 | 이론 전산학 형식 언어 오토마타 이론 컴파일러 이론 |
| 역사 | |
| 기원 | 촘스키 계층의 3형식 언어 클레이니의 정규 표현식 |
| 특성 | |
| 표현 | 정규 표현식 또는 유한 오토마타 |
| 포함 관계 | 문맥 자유 문법의 부분 집합 |
| 클로저 속성 | 합집합 교집합 여집합 연결 클레이니 스타 접두사 반전 준동형 사상 역 준동형 사상 |
| 결정 가능 문제 | 비어 있음 유한성 동등성 포함 관계 |
| 형식 언어 계층 | |
| 포함 관계 | 모든 정규 언어는 문맥 자유 언어이며, 모든 문맥 자유 언어는 문맥 의존 언어이고, 모든 문맥 의존 언어는 재귀 열거 언어이다. |
| 표현 방법 | |
| 표현식 | 정규 표현식 |
| 오토마타 | 유한 오토마타 (결정적, 비결정적) |
| 문법 | 정규 문법 |
| 활용 | |
| 예시 | 렉시컬 분석 |
| 관련 기술 | 정규 표현식 엔진 grep |
| 참고 자료 | |
| 관련 정리 | 클레이니 정리 |
2. 정의
알파벳 Σ 위의 정규 언어의 집합은 다음과 같이 재귀적으로 정의할 수 있다.
- 공집합 Ø은 정규 언어이다.
- 각 글자 ''a'' ∈ Σ에 대해 한원소집합 {''a''}는 정규 언어이다.
- A가 정규 언어이면, 클레이니 스타를 붙인 A*도 정규 언어이다. (따라서 빈 문자열로만 이루어진 {ε}도 정규 언어이다.)
- A와 B가 정규 언어이면, 합집합 A ∪ B와 문자열 연결 AB도 정규 언어이다.
- 그 밖의 언어는 정규 언어가 아니다.[54]
유한 문자열로 구성된 언어는 모두 정규 언어이다. 그 외의 전형적인 예로는, 문자 집합 {''a'', ''b''}를 사용한 문자열 중, 짝수 개의 ''a''를 포함하는 문자열의 집합은 정규 언어이고, 임의 개수의 ''a'' 다음에 임의 개수의 ''b''가 이어지는 문자열로 구성된 언어도 정규 언어이다.
3. 예시
유한한 언어는 모두 정규 언어이다. 특히 {ε} = Ø*도 정규 언어이다. 알파벳 {''a'', ''b''} 위의 정규 언어의 예로는 ''a''를 짝수 개 포함하는 모든 문자열의 집합이나, ''a'' 여러 개 뒤에 ''b'' 여러 개가 오는 꼴인 모든 문자열의 집합 따위가 있다.[58]
정규 언어가 아닌 언어의 예로 { ''anbn'' | ''n'' ≥ 0 }이 있다.[2] 유한 상태 기계의 기억력은 유한하기 때문에 ''a''가 몇 번 나왔는지 정확히 기억할 수 없으므로, 유한 상태 기계는 이 언어를 인지할 수 없다.
4. 동등한 형식화
형식언어 ''L''이 정규 언어라는 것은 다음과 동치이다.
- ''L''은 정규 표현식으로 나타낼 수 있다. (위의 정의)
- ''L''은 비결정적 유한 상태 기계가 인지하는 언어이다.[59]
- ''L''은 결정적 유한 상태 기계가 인지하는 언어이다.[59]
- ''L''은 정규 문법이 생성하는 언어이다.[59]
- ''L''은 교대 유한 상태 기계가 인지하는 언어이다.
- ''L''은 양쪽 유한 상태 기계가 인지하는 언어이다.
- ''L''은 접두사 문법이 생성하는 언어이다.
- ''L''은 읽기 전용 튜링 기계가 인지하는 언어이다.
- ''L''은 일변수 2차 논리에서 정의할 수 있는 언어이다. (뷔히-엘고트-트라크텐브로트 정리)[59]
5. 닫힘 성질
''K''와 ''L''이 정규 언어라면, 다음 연산의 결과도 정규 언어이다.
- 집합론적 부울 연산: 합집합 ''K'' ∪ ''L'', 교집합 ''K'' ∩ ''L'', 여집합 ''L''의 여집합, 상대 여집합 ''K'' - ''L''.[22]
- 정규 연산: ''K'' ∪ ''L'', 문자열 연결 ''KL'', 클레이니 스타 ''L''*.[23]
- 트리오 연산: 문자열 준동형사상, 역 문자열 준동형사상, 그리고 정규 언어와의 교집합. 결과적으로, 임의의 유한 상태 변환에 대해 닫혀 있다. 예시로 정규 언어를 사용한 몫 ''K'' / ''L''가 있다. 더 나아가, 정규 언어는 '임의의' 언어를 사용한 몫에 대해 닫혀 있다. 즉, ''L''이 정규 언어라면, 임의의 ''K''에 대해 ''L'' / ''K''는 정규 언어이다.[24]
- 역(또는 거울상) ''L''R.[25]
6. 결정 가능성
결정적 유한 상태 기계 A와 B가 주어졌을 때, 두 기계가 같은 언어를 인지하는지 결정할 수 있다.[60] 따라서 위의 닫힘 성질을 이용하면 두 기계가 인지하는 정규 언어 ''LA''와 ''LB''에 대해 다음 문제를 결정할 수 있다.
7. 복잡도
계산 복잡도 이론에서 모든 정규 언어의 복잡도 종류는 때때로 '''REGULAR''' 또는 '''REG'''로 지칭되며, 이는 상수 공간(사용된 공간은 입력 크기와 독립적)에서 해결할 수 있는 결정 문제인 DSPACE(O(1))과 같다. '''REGULAR''' ≠ '''AC'''0인데, 이는 (자명하게) 입력의 1 비트 수가 짝수인지 홀수인지 결정하는 패리티 문제를 포함하고, 이 문제는 '''AC'''0에 속하지 않기 때문이다.[35] 반면에, '''REGULAR'''는 '''AC'''0를 포함하지 않는데, 회문의 비정규 언어나 와 같은 비정규 언어는 모두 '''AC'''0에서 인식될 수 있기 때문이다.[36]
언어가 ''정규 언어''가 아니라면, 이를 인식하기 위해서는 최소한 Ω(log log ''n'')의 공간을 가진 기계가 필요하다(여기서 ''n''은 입력 크기).[37] 다시 말해, DSPACE(o(log log ''n''))는 정규 언어의 종류와 같다. 실제로 대부분의 비정규 문제는 최소한 로그 공간을 사용하는 기계로 해결된다.
8. 촘스키 위계에서의 위치
모든 정규 언어는 문맥 자유 언어이다. 그러나 반대는 성립하지 않는다. { ''anbn'' | ''n'' ≥ 0 }는 문맥 자유 언어이지만 정규 언어가 아닌 예이다.
주어진 언어가 정규 언어인지 알아보려면 흔히 마이힐-네로드 정리나 펌핑 보조정리를 사용한다. 그 밖에 정규 언어의 닫힘 성질이나 콜모고로프 복잡도를 사용하는 방법도 있다.[62]
정규 언어는 촘스키 위계에서 문맥 자유 언어의 진부분 집합이다. 즉, 정규 언어는 문맥 자유 언어에 포함되지만, 그 역은 참이 아니다. 예를 들어, ''a''의 개수와 ''b''의 개수가 같은 모든 문자열로 구성된 언어는 문맥 자유 언어이지만 정규 언어는 아니다. 언어가 정규 언어가 아님을 증명하기 위해 종종 마이힐-네로드 정리와 정규 언어 펌핑 보조정리를 사용한다. 다른 방법으로는 정규 언어의 폐쇄 속성[38]을 사용하거나 콜모고로프 복잡도를 정량화하는 방법이 있다.[39]
정규 언어의 중요한 하위 클래스에는 다음이 포함된다.
- 유한 언어, 단어의 수가 유한한 언어.[40] 이는 정규 언어이며, 언어의 모든 단어의 합집합인 정규 표현식을 만들 수 있다.
- 별-자유 언어, 빈 기호, 문자, 연결 및 모든 부울 연산자(집합 대수 참조)로 구성된 정규 표현식으로 설명할 수 있는 언어는 여집합을 포함하지만 클레이 스타는 포함하지 않는다. 이 클래스에는 모든 유한 언어가 포함된다.[41]
9. 정규 언어의 하위 클래스
촘스키 위계에서 모든 정규 언어는 문맥 자유 언어임을 알 수 있다. 역은 성립하지 않는다. 예를 들어, ''a''의 개수와 ''b''의 개수가 같은 모든 문자열로 구성된 언어는 문맥 자유 언어이지만 정규 언어는 아니다. 언어가 정규 언어가 아님을 증명하기 위해 종종 마이힐-네로드 정리와 정규 언어 펌핑 보조정리를 사용한다. 다른 방법으로는 정규 언어의 폐쇄 속성[38]을 사용하거나 콜모고로프 복잡도를 정량화하는 방법이 있다.[39]
정규 언어의 중요한 하위 클래스는 다음과 같다.
- 유한 언어: 단어의 수가 유한한 언어.[40] 이는 정규 언어이며, 언어의 모든 단어의 합집합인 정규 표현식을 만들 수 있다.
- 별-자유 언어: 빈 기호, 문자, 연결 및 모든 부울 연산자(집합 대수 참조)로 구성된 정규 표현식으로 설명할 수 있는 언어는 여집합을 포함하지만 클레이 스타는 포함하지 않는다. 이 클래스에는 모든 유한 언어가 포함된다.[41]
10. 정규 언어의 단어 수
을 에서 길이가 인 단어의 개수로 나타낸다. ''L''의 생성 함수는 다음과 같은 형식적 멱급수이다.
:
언어 ''L''의 생성 함수는 ''L''이 정규 언어일 경우 유리 함수이다.[42] 따라서 모든 정규 언어 에 대해, 수열 은 상수-재귀적이다. 즉, 정수 상수 , 복소수 상수 와 복소수 다항식 가 존재하여 모든 에 대해 에서 길이가 인 단어의 개수 은 다음과 같다.
:.[43][44][45][46]
따라서 특정 언어 의 비정규성은 에서 주어진 길이의 단어를 세어 증명할 수 있다. 예를 들어 균형 잡힌 괄호 문자열의 딕 언어를 고려해 보자. 딕 언어에서 길이가 인 단어의 개수는 카탈랑 수 와 같으며, 이는 의 형태가 아니므로 딕 언어의 비정규성을 보여준다. 일부 고유값 가 같은 크기를 가질 수 있으므로 주의해야 한다. 예를 들어, 모든 짝수 이진 단어의 언어에서 길이가 인 단어의 개수는 의 형태가 아니지만, 짝수 또는 홀수 길이의 단어의 개수는 이 형태를 가지며, 해당 고유값은 이다. 일반적으로 모든 정규 언어에 대해 모든 에 대해, 길이 인 단어의 개수가 점근적으로 이 되도록 하는 상수 가 존재한다.[47]
11. 일반화
정규 언어의 개념은 무한 단어(ω-오토마타)와 트리(트리 오토마타)로 일반화되었다.[50][51]
유리 집합은 정규 언어의 개념을 반드시 자유일 필요는 없는 모노이드로 일반화한다.[50][51]
유리 급수는 반환에 대한 형식적 멱급수의 맥락에서 일반화된다.[52][53]
참조
[1]
서적
Handbook of Formal Languages: Volume 1. Word, Language, Grammar
Springer
[2]
문서
Eilenberg (1974), p. 16 (Example II, 2.8) and p. 25 (Example II, 5.2).
[3]
문서
1. ⇒ 2. by [[Thompson's construction algorithm]]
[4]
문서
2. ⇒ 1. by [[Kleene's algorithm]] or using [[Arden's lemma]]
[5]
문서
2. ⇒ 3. by the [[powerset construction]]
[6]
문서
3. ⇒ 2. since the [[deterministic finite automaton#Formal definition|former definition]] is stronger than the [[nondeterministic finite automaton#Formal definition|latter]]
[7]
문서
2. ⇒ 4. see Hopcroft, Ullman (1979), Theorem 9.2, p.219
[8]
문서
4. ⇒ 2. see Hopcroft, Ullman (1979), Theorem 9.1, p.218
[9]
간행물
Chapter 12 - Decidability of S1S and S2S
Springer
2002
[10]
문서
3. ⇔ 10. by the [[Myhill–Nerode theorem]]
[11]
문서
"''u''~''v'' is defined as: ''uw''∈''L'' if and only if ''vw''∈''L'' for all ''w''∈Σ*"
[12]
서적
see the proof in the ''[[Syntactic monoid#Syntactic equivalence|Syntactic monoid]]'' article, and see p.160 in
Cambridge University Press
[13]
서적
Algorithms
https://books.google[...]
Addison-Wesley Professional
[14]
서적
Automatic Sequences: Theory, Applications, Generalizations
https://books.google[...]
Cambridge University Press
[15]
서적
Finite Automata
https://books.google[...]
CRC Press
[16]
서적
Discrete Mathematics and Its Applications 7th edition
https://books.google[...]
McGraw-Hill Science
[17]
서적
Syntactic and Structural Pattern Recognition: Theory and Applications
https://books.google[...]
World Scientific
1990-01
[18]
서적
The Oxford Handbook of Computational Linguistics
https://books.google[...]
Oxford University Press
[19]
보고서
Representation of Events in Nerve Nets and Finite Automata
http://www.rand.org/[...]
1951-12
[20]
학술지
On Certain Formal Properties of Grammars
http://www.sciencedi[...]
[21]
문서
Chomsky 1959, Footnote 10, p.150
[22]
문서
Salomaa (1981) p.28
[23]
문서
Salomaa (1981) p.27
[24]
학술대회
Constructivity in Computer Science, Summer Symposium, San Antonio, Texas, USA, June 19-22, Proceedings
Springer
[25]
문서
Hopcroft, Ullman (1979), Chapter 3, Exercise 3.4g, p. 72
[26]
문서
Hopcroft, Ullman (1979), Theorem 3.8, p.64; see also Theorem 3.10, p.67
[27]
문서
Check if ''L''''A'' ∩ ''L''''B'' = ''L''''A''. Deciding this property is [[NP-hard]] in general; see [[:File:RegSubsetNP.pdf]] for an illustration of the proof idea.
[28]
문서
Aho, Hopcroft, Ullman (1974), Exercise 10.14, p.401
[29]
문서
Aho, Hopcroft, Ullman (1974), Theorem 10.14, p399
[30]
문서
Hopcroft, Ullman (1979), Theorem 13.15, p.351
[31]
서적
The Equivalence Problem for Regular Expressions with Squaring Requires Exponential Space
https://people.csail[...]
13th Annual IEEE Symp. on Switching and Automata Theory
1972-10
[32]
서적
Proc. 5th ann. symp. on Theory of computing (STOC)
https://esp.mit.edu/[...]
ACM
[33]
문서
Hopcroft, Ullman (1979), Corollary p.353
[34]
서적
Automata, Logics, and Infinite Games
Springer
2002
[35]
학술지
Parity, circuits, and the polynomial-time hierarchy
[36]
서적
Logical foundations of proof complexity
Association for Symbolic Logic
[37]
간행물
Hierarchies of memory-limited computations
Proceedings of the 6th Annual IEEE Symposium on Switching Circuit Theory and Logic Design
[38]
웹사이트
How to prove that a language is not regular?
https://cs.stackexch[...]
2018-04-10
[39]
서적
Theoretical computer science: Introduction to Automata, Computability, Complexity, Algorithmics, Randomization, Communication, and Cryptography
https://www.worldcat[...]
Springer
2004
[40]
문서
A finite language shouldn't be confused with a (usually infinite) language generated by a finite automaton.
[41]
서적
Logic and automata: history and perspectives
Amsterdam University Press
[42]
학술지
A necessary condition for the rationality of the zeta function of a regular language
[43]
문서
Flajolet & Sedgweick, section V.3.1, equation (13).
[44]
웹사이트
Number of words in the regular language $(00)^*$
https://cs.stackexch[...]
2018-04-10
[45]
웹사이트
Proof of theorem for arbitrary DFAs
https://cs.stackexch[...]
[46]
웹사이트
Number of words of a given length in a regular language
https://cs.stackexch[...]
2018-04-10
[47]
문서
Flajolet & Sedgewick (2002) Theorem V.3
[48]
학술지
Zeta functions of formal languages
[49]
문서
Berstel & Reutenauer (2011) p.222
[50]
서적
Automata, languages, and machines
Academic Press
[51]
서적
Finite automata, formal logic, and circuit complexity
https://archive.org/[...]
Birkhäuser
[52]
문서
Berstel & Reutenauer (2011) p.47
[53]
서적
Elements of automata theory
Cambridge University Press
[54]
문서
つまり[[正規演算]]に[[閉じている]]。
[55]
서적
The Oxford Handbook of Computational Linguistics
http://books.google.[...]
Oxford University Press
[56]
서적
Finite Automata
http://books.google.[...]
CRC Press
[57]
서적
Handbook of Formal Languages: Volume 1. Word, Language, Grammar
http://books.google.[...]
Springer
[58]
문서
Eilenberg (1974), p. 16 (Example II, 2.8) and p. 25 (Example II, 5.2).
[59]
문서
M. Weyer: Chapter 12 - Decidability of S1S and S2S, p. 219, Theorem 12.26. In: Erich Grädel, Wolfgang Thomas, Thomas Wilke (Eds.): Automata, Logics, and Infinite Games: A Guide to Current Research. Lecture Notes in Computer Science 2500, Springer 2002.
[60]
문서
Hopcroft, Ullman (1979), Theorem 3.8, p.64; Theorem 3.10, p.67도 참조.
[61]
문서
L''{''A''} ∩ ''L''{''B''} = ''L''{''A''}인지 확인하면 된다.
[62]
서적
Theoretical computer science: Introduction to Automata, Computability, Complexity, Algorithmics, Randomization, Communication, and Cryptography
https://www.worldcat[...]
Springer
2004
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com